#请把DokcerFile 放至helloworld同级目录
#来源的基础镜像，这里不需要单独FROM JDK，因为maven镜像里面附带了JDK
FROM maven:alpine
#作者
LABEL authors="shuizhu"

#指定环境变量url为/usr/helloworld
ENV url /usr/helloworld

#指定容器的工作目录
WORKDIR ${url}

#   RUN：镜像构建时，执行的命令，会生成新镜像层，一般用于：yum安装源、MVN构建、下载或配置，chmod授权
#   CMD：容器启动时执行的命令，若容器run时（docker run），附带有启动参数，那么CMD不会执行，
#        当CMD与ENTRYPOINT共存时，CMD会当做参数，传递给ENTRYPOINT（相当于字符串，拼接到ENTRYPOINT后）
#   ENTRYPOINT：容器启动时执行的命令，若容器run时（docker run），附带有启动参数，那么参数会拼接到ENTRYPOINT后面
#   CMD与ENTRYPOINT：dockerfile存在多个CMD或ENTRYPOINT时，只会执行最后一个CMD或ENTRYPOINT

# COPY语法：当为目录时，不会复制目录本身，只会复制其内容
#   COPY   目录或普通文件   路径
# ADD语法：（压缩文件会自动解压）当为目录时，不会复制目录本身，只会复制其内容
#   ADD    目录或普通文件/压缩文件等特殊文件/链接 路径
# COPY / ADD ： docker都是根据上下文去构建容器的，因此第一个参数不能出现../（容器会找不到）
COPY helloworld /usr/helloworld

COPY helloworld/settings.xml /usr/share/maven/conf/settings.xml
# RUN：每次run都会生成镜像层，每次RUN都不会跟其他RUN产生关系，不能用cd进入目录，需要使用WORKDIR去指定工作目录
RUN ["mvn","package"]

#ENTRYPOINT ["java", "-jar","target/*.jar"]
#这里不能重命名，会失败，如：["mv","/target/*.jar;","/target/app.jar","java", "-jar","target/app.jar"]
#虽然有分号隔开，但是java -jar时，jar包名还是之前那个
ENTRYPOINT ["mv","/target/*.jar","/target/app.jar","java", "-jar","target/app.jar"]
